import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsString, IsInt, Length, IsOptional, Min, Max } from 'class-validator';

export class CreateDictDto {
  @ApiProperty({
    description: '字典编码',
    example: 'gender',
    required: true
  })
  @IsNotEmpty({ message: '字典编码不能为空' })
  @IsString({ message: '字典编码必须是字符串类型' })
  @Length(2, 50, { message: '字典编码长度必须在2-50个字符之间' })
  dictCode: string;

  @ApiProperty({
    description: '字典名称',
    example: '性别',
    required: true
  })
  @IsNotEmpty({ message: '字典名称不能为空' })
  @IsString({ message: '字典名称必须是字符串类型' })
  @Length(2, 50, { message: '字典名称长度必须在2-50个字符之间' })
  name: string;

  @ApiProperty({
    description: '状态(0:正常;1:禁用)',
    example: 1,
    required: false,
    default: 0
  })
  @IsOptional()
  @IsInt({ message: '状态必须是整数类型' })
  @Min(0, { message: '状态值最小为0' })
  @Max(1, { message: '状态值最大为1' })
  status?: number;

  @ApiProperty({
    description: '备注',
    example: '用户性别选项',
    required: false
  })
  @IsOptional()
  @IsString({ message: '备注必须是字符串类型' })
  @Length(0, 255, { message: '备注长度不能超过255个字符' })
  remark?: string;

  @ApiProperty({
    description: '创建人ID',
    example: 1,
    required: false
  })
  @IsOptional()
  @IsInt({ message: '创建人ID必须是整数类型' })
  createBy?: number;
}
